$(start);

var TYPE_GYR = 1;
var TYPE_LINEAR_ACC = 4;

var NORMAL_QUIET = 5;
var UI_QUIET = 10;
var GAME_QUIET = 15;
var FAST_QUIET = 20;

var QUIET = NORMAL_QUIET;


var DISCARD_VALUE = 0.1;

function start(){
    console.log("start")

    var calculate = new Calculate();

    // var socket = new WebSocket("ws://192.168.15.225:4444/");
    // var socket = new WebSocket("ws://10.215.102.140:4444/");
    var socket = new WebSocket("ws://192.168.9.86:4444/");

    var glChart = echarts.init(document.getElementById('dis'));
    var chart = echarts.init(document.getElementById('acc'));

    var xLaccData = [];
    var yLaccData = [];
    var zLaccData = [];
    var timeData = [];

    var xLaccAxis = [];

    var xGyrData = [];
    var yGyrData = [];
    var zGyrData = [];

    var preDis = [null, null, null];
    var disData = [];

    var num = 0;
    var quietNum = 0;
    var canDiscard = false;

    var option = {
        title: {
            text: '加速度（m/s2）',
            x: 'center'
        },
        tooltip: {},
        legend: {
            // borderWidth:1,
            // padding:10,
            // itemGap:20,
            data:['x方向加速度','y方向加速度','z方向加速度'],
            x:'left',
            // y:'top',
            // textStyle:{
            //     color:'rgba(0,0,0,255)'
            // }
        },
        dataZoom:[
            {
                show:true,
                realtime:true,
                // startValue:todo,
                // endValue:todo,
            }
        ],
        xAxis: {
            data: xLaccAxis,
            splitLine:{
                show: true,
                color: 'rgba(0,255,0,30)',
            },
            // boundaryGap: false,
            type : 'category',
            axisLabel: {
                textStyle: {
                    // color: 'rgba(0,255,0,30)',
                    // fontSize: 35,
                }
            },
            nameTextStyle: {
                // color: 'rgba(0,255,0,30)', 
                // fontSize: 35,
            },
            axisLine: {
                lineStyle: {
                    // color: 'rgba(0,255,0,30)',
                    // width: 5,
                }
            },
            axisTick: {
                lineStyle: {
                    // color: 'rgba(0,255,0,30)',
                    // width: 5,
                }
            }
        },
        yAxis: {
            type: 'value',
            splitLine:{
                show: true,
                color: 'rgba(0,255,0,30)',
            },
            // show:false,
            axisLine: {
                lineStyle: {
                    // color: 'rgba(0,255,0,30)',
                    // width: 5,
                }
            },
            axisTick: {
                lineStyle: {
                    // color: 'rgba(0,255,0,30)',
                    // width: 5,
                }
            }
        },
        series: [
            {
                name: 'x方向加速度',
                type: 'line',
                itemStyle: {
                    color: 'rgba(0,255,255,255)'
                },
                data: xLaccData
            },
            {
                name: 'y方向加速度',
                type: 'line',
                itemStyle: {
                    color: 'rgba(255,0,255,255)'
                },
                data: yLaccData
            },
            {
                name: 'z方向加速度',
                type: 'line',
                itemStyle: {
                    color: 'rgba(255,255,0,255)'
                },
                data: zLaccData
            // {
		        //     name: '距离(m)',
		        //     type: 'line',
		        //     smooth: true,
		        //     data: datasY,
		        //     itemStyle: {
		        //         normal: {
		        //             // color : 'rgba(255,255,0,30)',
		        //             lineStyle: {
		        //                 // width: 5,
		        //             },
		        //         },
		        //     },
		        //     // markPoint : {
		        //     //     show : true,
		        //     //     symbol:'image://images/first.png',
		        //     //     symbolSize: 100,
		        //     //     data : markDatas,
		        //     //     itemStyle: {
		        //     //         normal: {
		        //     //             label: {
		        //     //                 textStyle: {
		        //     //                     color: 'rgba(255,255,0,30)',
		        //     //                     fontSize: 35,
		        //     //                 }
		        //     //             }
		        //     //         }
		        //     //     }
		        //     // },
		        // },
		        // {
		        //     name: '距离(m)',
		        //     type: 'line',
		        //     smooth: true,
		        //     data: datasY,
		        // }
            }
        ]
    };

    var glOption = {
        grid3D: {
            axisLine: {
                lineStyle: { color: '#fff' }
            },
            axisPointer: {
                lineStyle: { color: '#fff' }
            },
        },
        xAxis3D: {
            splitLine:{
                show: true,
                color: 'rgba(255,255,255,30)',
            },
        },
        yAxis3D: {
            splitLine:{
                show: true,
                color: 'rgba(255,255,255,30)',
            },
        },
        zAxis3D: {
            splitLine:{
                show: true,
                color: 'rgba(255,255,255,30)',
            },
        },
        // dataset: {
        //     // dimensions: [
        //     //     'Income',
        //     //     'Life Expectancy',
        //     //     'Population',
        //     //     'Country',
        //     //     {name: 'Year', type: 'ordinal'}
        //     // ],
        //     source: disData,
        // },
        series: [
            {
                type: 'line3D',
                symbolSize: 2,
                data: disData,
                // encode: {
                //     x: 'Country',
                //     y: 'Life Expectancy',
                //     z: 'Income',
                //     tooltip: [0, 1, 2, 3, 4]
                // }
            }
        ] 
    };

    glChart.setOption(glOption);

    var mm = 0;

    socket.onmessage = function(event){
        var AllData = JSON.parse(event.data);
        // console.log(AllData);

        if(AllData.type ==  TYPE_GYR){
            // if(!canDiscard){
            //     xGyrData.push(AllData.x);
            //     yGyrData.push(AllData.y);
            //     zGyrData.push(AllData.z);
            // }

            // if(xGyrData.length == xLaccData.length && !canDiscard){
            //     console.log(num);
            //     var dis = calculate.distance(
            //         xLaccData[xLaccData.length - 1],
            //         yLaccData[yLaccData.length - 1],
            //         zLaccData[zLaccData.length - 1],
            //         xGyrData[xGyrData.length - 1],
            //         yGyrData[yGyrData.length - 1],
            //         zGyrData[zGyrData.length - 1],
            //         timeData[timeData.length - 1]
            //     );
            //     console.log("dis --------> " + dis);
            // }

            // canDiscard = false;
        } else if(AllData.type == TYPE_LINEAR_ACC){
            if(Math.abs(AllData.x) < DISCARD_VALUE && Math.abs(AllData.y) < DISCARD_VALUE && Math.abs(AllData.z) < DISCARD_VALUE){
                quietNum++;
                if(quietNum > QUIET){
                    quietNum = 0;
                    canDiscard = true;
                    calculate.reset();
                    return;
                }
                // if(xGyrData.length == xLaccData.length + 1){
                //     xGyrData.pop();
                //     yGyrData.pop();
                //     zGyrData.pop();
                // }
            } else {
                canDiscard = false;
            }

            if(canDiscard){
                return;
            }

            canDiscard = false;
            xLaccData.push(AllData.x);
            yLaccData.push(AllData.y);
            zLaccData.push(AllData.z);
            timeData.push(AllData.timestamp);
            xLaccAxis.push(num++);
            chart.setOption(option);
            
            if(!canDiscard){
            // if(xGyrData.length == xLaccData.length && !canDiscard){
                // console.log(num);
                var disArray = calculate.distance(
                    xLaccData[xLaccData.length - 1],
                    yLaccData[yLaccData.length - 1],
                    zLaccData[zLaccData.length - 1],
                    // xGyrData[xGyrData.length - 1],
                    // yGyrData[yGyrData.length - 1],
                    // zGyrData[zGyrData.length - 1],
                    timeData[timeData.length - 1]
                );

                if(disArray[0] != null && disArray[1] != null && disArray[2] != null){
                    var tempDis = preDis;
                    if(tempDis[0] != null){
                        disArray[0] += tempDis[0];
                        disArray[1] += tempDis[1];
                        disArray[2] += tempDis[2];
                    }
                    preDis = [disArray[0], disArray[1], disArray[2]];
                    disArray[1] = 0;
                    disArray[2] = mm++;
                    disData.push(disArray);
                    
                    glChart.setOption(glOption);
                }
            }
        }

        
    };

    socket.onclose = function(event){
        console.log("model socket close");
	};

	socket.onerror = function(event) { 

    };

    socket.onopen = function(event){
		console.log("socket open");
	};
}